###09.01_多态的概述及代码体现
A:多态(polymorphic)的前提:
	a.要有继承关系;
	b.要有方法重写;
	c.要有父类引用指向子类对象;
	
###09.02_多态中的成员访问特点之成员变量
A:成员变量:
	编译看左边(父类), 运行看左边(父类);没有为什么, 这是语法规定;
	class Fu {
		public int num = 5;
	}
	class Zi extends Fu {
		public int num = 10;
	}
	main() {
		Fu test = new Zi();
		System.out.println(test.num);   //输出结果是: 5
		Zi test2 = new Zi();
		System.out.println(test2.num);  //输出结果是: 10
	}
	
###09.03_多态中的成员访问特点之成员方法
A:成员方法:
	编译看左边(父类), 运行看右边(子类);
	
###09.04_多态中的成员访问特点之静态成员方法
A:静态方法:
	a.编译看左边(父类), 运行看左边(父类);
	(静态和类相关, 算不上重写, 所以访问还是左边的)
	b.只有非静态的成员方法, 编译看左边, 运行看右边;
	
###09.05_多态中向上转型和向下转型
	Person p = new SuperMan();   //向上转型,合法
	SuperMan sm = (SuperMan)(p); //向下转型,合法
	
###09.06_多态的好处和弊端
A:好处:
	提高了代码的维护性(继承保证);
	提高了代码的扩展性(由多态保证);
B:弊端:
	不能使用子类的特有属性和行为;
	
	
###09.07_抽象类的概述及其特点
A:抽象类的特点
	a.抽象类和抽象方法必须用abstract关键字修饰;
		abstract class 类名()
		public abstract void eat();
	b.抽象类不一定有抽象方法, 有抽象方法的类一定是抽象类或者接口;
	c.抽象类不能实例化, 只能靠子类了;
	d.抽象类的子类:
		1.抽象类;
		2.重写抽象类中的所有抽象方法;
		
###09.08_抽象类的成员特点
A:抽象类的成员特点
	a.成员变量: 既可以是变量, 也可以是常量。 
			abstract不能修饰成员变量！
	b.构造方法：
			有；
			用于子类访问父类数据的初始化；
	c.成员方法：既可以是抽象的, 也可以是非抽象的;
	
###09.09_抽象类的相关面试题
A.面试题1:
	一个抽象类如果没有抽象方法, 可不可以定义为抽象类?如果可以, 有什么意义?
		答:可以。这么做的目的只有一个, 就是不让其他类创建本类对象, 交给子类完成;
B.面试题2:		
	abstract不能和哪些关键字共存?
		答:final, static, private;
		
		
###09.10_接口的概述和特点
A.接口概述
	a.从狭义的角度讲就是指java额interface;
	b.从广义的角度讲对外提供规则的就是接口;
B.接口特点
	a.接口用关键字interface表示
		interface 接口吗 {}
	b.类实现接口用implements表示
		class 类名 implements 接口名 {}
	c.接口不能直接实例化
	d.接口的子类
		1.可以是抽象类, 但是意义不大;
		2.可以是具体类, 要重写接口中所有抽象方法;
		
###09.11_接口成员的特点
A.成员变量:
	a.只能是常量, 并且是静态的而且是公共的;
	b.默认修饰符: public static final(你不写系统会自动加上)
	c.建议: 自己手动给出;
B.构造方法:
	a.接口没有构造方法;
C.成员方法:
	a.只能是抽象方法;
	b.默认修饰符: public abstract(你不写系统会自动加上)
	c.建议: 自己手动给出;
		
		



	
	
	